A. Field of the Invention
The present invention relates to the field of computers and, more particularly, to the field of systems and methods for configuring and updating electronic adapter boards. Electronic adapter boards are devices that operate in conjunction with device drivers to enhance the functional capability of a computer. Electronic adapter boards include no-nvolatile memory components that store digital information identifying the boards according to device versions. Different device versions may include different features and functions. During operation, the device drivers function with specific device versions of the electronic adapter board.
As described in detail below, the digital information in the non-volatile memory is updated in a device upgrade to conform to the specific device version used by the device driver. For example, the present invention provides automatic and user-controlled device upgrade capability precluding the need to replace the electronic adapter board when new device versions become available.
B. Background of the Invention
Computing systems such as personal computers and computer workstations may be configured to perform specific functions or to operate in a manner desired by a user. The user may select different computer programs that provide a computing system with different applications. The user may also connect various devices to the computing system""s input/output system to provide various ways for a user to interact with the computer as well as to expand the functional capacity of the system. Such devices provide the system with added functions such as expanded memory (i.e. plug-in memory boards, disk storage interface, etc.), communications capability (i.e. modems, network cards, etc.) and multimedia functions (i.e. sound cards, graphics device interfaces, etc.).
As the computer industry has evolved, standard interfaces have emerged to help ease the development of hardware and software systems that enhance the functions available on computers. For example, standard bus interfaces, such as the Personal Computer Memory Card International (PCMCIA), provide standard bus connectors that require cards, or circuit boards, to connect to the bus in the same way.
The devices may include a memory system having non-volatile programmable memory for storing resident programs, or firmware, that may execute using a resident processor. A resident processor is a processor that is installed on the device, or operates local to the device and independently of the central processor of the computer. The resident processor and the device firmware may provide a complete bootable computing environment. The programs in the firmware comprise an embedded system that may include an embedded operating system and function code for performing the various functions of the device. The non-volatile memory may also include data that may be accessed by the central processor of the computer.
The operating system, programs and/or data stored in the non-volatile memory of the device may be referred to as a memory image of binary information that is stored in the non-volatile memory. When a change is made to the programs that perform the functions of the device, the programmer first changes the program""s source code. The source code is then compiled and linked with the other programs and/or data in the embedded system to produce the memory image that is programmed, or xe2x80x9cburnedxe2x80x9d, into the non-volatile memory. The term xe2x80x9cimagexe2x80x9d is used by those of ordinary skill in the art to refer to the pattern of one""s and zero""s stored in the non-volatile memory each time the device is programmed. Types of non-volatile memory that may be used to store the image include electrically-erasable programmable read-only memory, a flash memory, or any other memory that retains the data it stores whether power is applied to it or not.
Devices are typically controlled by software device drivers that operate under the control of the operating system of the computer. Software drivers include a device initialization function and a device interface that allows a system to configure and use the device. The system uses the device by sending commands or messages from programs operating under the central processor of the computer. Depending on the type of functions performed by the device, standard interfaces may exist to simplify the development and operation of such devices. For example, software device drivers for controlling a modem may be invoked using a standard I/O system that is typically included in the operating system to perform communications functions. A further standard interface may be provided by communications protocol drivers that may be used by applications, such as World-Wide Web browsers to communicate over the Internet.
Manufacturers of devices that enhance a computer""s functions may distribute such devices in the form of cards, or circuit boards that connect into the computing system""s bus system. In addition, the cards may be distributed with software drivers, or may be designed to operate with software drivers that provide program control of the devices to the software comprising the computing system""s applications. The user may install software drivers in the computer""s software system as part of the procedure used to install the card into the computing system""s bus system. When the card has been connected to the bus and the software driver has been installed, the device is presumably capable of operating according to its intended function.
Device drivers are typically easy to update to include added features because they operate under operating system control. Manufacturers take advantage of this capability by simply updating the device driver to add features. The device drivers are also easy to distribute. Upgraded device drivers may be distributed by mail on floppy disks, or by a download from a remote source provided by the manufacturer or product distributor. The remote source may offer the device driver on a web page or on a computer that is capable of a point-to-point connection.
Such updates, however, are limited by the hardware and firmware that is already available on the card. In order to update the hardware and firmware of a card with hardware changes, it must be replaced.
It would be burdensome and expensive for a customer to replace a card and its accompanying software to for what may be a simple update. Moreover, if an update is needed to correct a problem or defect, the manufacturer may have to absorb the cost. If the product is a card that has sold successfully, a large number of cards may need to be replaced.
Much of the functional capability of the card is provided by the firmware resident on the card. Significant updates of the functional capability of a card may be achieved by updating the software driver and the memory image in the non-volatile memory. For example, a modem manufacturer may sell a large number of digital modem cards that include an embedded processing system that does not support interrupt processing. By changing the embedded code in the non-volatile memory of the modem card, a digital modem having the same hardware may be updated to support interrupts such that an improvement in throughput may result.
It would be desirable to provide a system or method to update the image in the non-volatile embedded memory in a device without having to replace the device.
One way for manufacturers to provide customers with a way to update the image in the non-volatile memory is to provide an Internet site having file transport protocol capabilities. Customers can connect to the site and follow instructions for downloading an updated image. Such a system for providing updates is subject to user error. In cases where the update involves a large image, the process may be time-consuming, particularly when Internet traffic is high.
It would be desirable to provide a way for customers to update non-volatile memory images automatically with little or no user intervention.
The present invention solves these problems by automatically updating a memory image in non-volatile memory. When a device has been modified by a manufacturer, uses of previous versions of the device may enjoy the benefits of new features available on the modified device by installing an upgraded device driver. The upgraded device driver automatically updates the memory image in non-volatile memory, or provides a system for updating the memory image under user control.
In view of the above, a method for updating a memory image in a non-volatile programmable memory in a device in a computing system is provided. The method initializes a device driver for controlling the device, preferably during system initialization. A device version of the device is detected in the device to determine if the device version is an updated device version. The memory image in the non-volatile programmable memory is updated to store the memory image of the updated device version.
In a further aspect of the present invention, a system for updating a non-volatile programmable memory in a device in a computing system with little or no user intervention is provided. According to the present invention, the system includes a memory image in the non-volatile programmable memory of the device. The memory image includes resident data used by the device to perform a plurality of device functions. A device type identifier is included to identify the device as being one of a plurality of device types including an updated device having an updated device type identifier. A device type identifier is assigned to the device as its manufacturer releases the device as a product. Each subsequent product release is assigned the updated device type identifier. The memory image is an updated image when the device type identifier matches the updated device type identifier. The system also includes a copy of the updated image stored in the memory medium of the computing system.
A device driver is also stored in the memory medium of the computing system. The device driver controls the device when the memory image is the updated image. A version manager having a device version detector for detecting whether the device version matches the updated device version. A memory image converter is included for incorporating the updated image in the non-volatile programmable memory when the device version does not match the updated device version.